YES 0.926 H-Termination proof of /home/matraf/haskell/eval_FullyBlown_Fast/List.hs
H-Termination of the given Haskell-Program with start terms could successfully be proven:



HASKELL
  ↳ LR

mainModule List
  ((mapAccumR :: (c  ->  b  ->  (c,a))  ->  c  ->  [b ->  (c,[a])) :: (c  ->  b  ->  (c,a))  ->  c  ->  [b ->  (c,[a]))

module List where
  import qualified Maybe
import qualified Prelude

  mapAccumR :: (b  ->  c  ->  (b,a))  ->  b  ->  [c ->  (b,[a])
mapAccumR s [] (s,[])
mapAccumR f s (x : xs
(s'',y : ys) where 
s' (\(s',_) ->s') vv8
s'' (\(s'',_) ->s'') vv7
vv7 f s' x
vv8 mapAccumR f s xs
y (\(_,y) ->y) vv7
ys (\(_,ys) ->ys) vv8


module Maybe where
  import qualified List
import qualified Prelude



Lambda Reductions:
The following Lambda expression
\(_,y)→y

is transformed to
y0 (_,y) = y

The following Lambda expression
\(_,ys)→ys

is transformed to
ys0 (_,ys) = ys

The following Lambda expression
\(s'',_)→s''

is transformed to
s''0 (s'',_) = s''

The following Lambda expression
\(s',_)→s'

is transformed to
s'0 (s',_) = s'



↳ HASKELL
  ↳ LR
HASKELL
      ↳ BR

mainModule List
  ((mapAccumR :: (c  ->  b  ->  (c,a))  ->  c  ->  [b ->  (c,[a])) :: (c  ->  b  ->  (c,a))  ->  c  ->  [b ->  (c,[a]))

module List where
  import qualified Maybe
import qualified Prelude

  mapAccumR :: (b  ->  c  ->  (b,a))  ->  b  ->  [c ->  (b,[a])
mapAccumR s [] (s,[])
mapAccumR f s (x : xs
(s'',y : ys) where 
s' s'0 vv8
s'' s''0 vv7
s''0 (s'',_) s''
s'0 (s',_) s'
vv7 f s' x
vv8 mapAccumR f s xs
y y0 vv7
y0 (_,yy
ys ys0 vv8
ys0 (_,ysys


module Maybe where
  import qualified List
import qualified Prelude



Replaced joker patterns by fresh variables and removed binding patterns.

↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
HASKELL
          ↳ COR

mainModule List
  ((mapAccumR :: (a  ->  c  ->  (a,b))  ->  a  ->  [c ->  (a,[b])) :: (a  ->  c  ->  (a,b))  ->  a  ->  [c ->  (a,[b]))

module List where
  import qualified Maybe
import qualified Prelude

  mapAccumR :: (b  ->  c  ->  (b,a))  ->  b  ->  [c ->  (b,[a])
mapAccumR vw s [] (s,[])
mapAccumR f s (x : xs
(s'',y : ys) where 
s' s'0 vv8
s'' s''0 vv7
s''0 (s'',vzs''
s'0 (s',wus'
vv7 f s' x
vv8 mapAccumR f s xs
y y0 vv7
y0 (vy,yy
ys ys0 vv8
ys0 (vx,ysys


module Maybe where
  import qualified List
import qualified Prelude



Cond Reductions:
The following Function with conditions
undefined 
 | False
 = undefined

is transformed to
undefined  = undefined1

undefined0 True = undefined

undefined1  = undefined0 False



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
HASKELL
              ↳ LetRed

mainModule List
  ((mapAccumR :: (c  ->  a  ->  (c,b))  ->  c  ->  [a ->  (c,[b])) :: (c  ->  a  ->  (c,b))  ->  c  ->  [a ->  (c,[b]))

module List where
  import qualified Maybe
import qualified Prelude

  mapAccumR :: (c  ->  a  ->  (c,b))  ->  c  ->  [a ->  (c,[b])
mapAccumR vw s [] (s,[])
mapAccumR f s (x : xs
(s'',y : ys) where 
s' s'0 vv8
s'' s''0 vv7
s''0 (s'',vzs''
s'0 (s',wus'
vv7 f s' x
vv8 mapAccumR f s xs
y y0 vv7
y0 (vy,yy
ys ys0 vv8
ys0 (vx,ysys


module Maybe where
  import qualified List
import qualified Prelude



Let/Where Reductions:
The bindings of the following Let/Where expression
(s'',y : ys)
where 
s'  = s'0 vv8
s''  = s''0 vv7
s''0 (s'',vz) = s''
s'0 (s',wu) = s'
vv7  = f s' x
vv8  = mapAccumR f s xs
y  = y0 vv7
y0 (vy,y) = y
ys  = ys0 vv8
ys0 (vx,ys) = ys

are unpacked to the following functions on top level
mapAccumRY wx wy wz xu = mapAccumRY0 wx wy wz xu (mapAccumRVv7 wx wy wz xu)

mapAccumRS'' wx wy wz xu = mapAccumRS''0 wx wy wz xu (mapAccumRVv7 wx wy wz xu)

mapAccumRYs wx wy wz xu = mapAccumRYs0 wx wy wz xu (mapAccumRVv8 wx wy wz xu)

mapAccumRS''0 wx wy wz xu (s'',vz) = s''

mapAccumRY0 wx wy wz xu (vy,y) = y

mapAccumRVv8 wx wy wz xu = mapAccumR wx wy wz

mapAccumRS' wx wy wz xu = mapAccumRS'0 wx wy wz xu (mapAccumRVv8 wx wy wz xu)

mapAccumRYs0 wx wy wz xu (vx,ys) = ys

mapAccumRS'0 wx wy wz xu (s',wu) = s'

mapAccumRVv7 wx wy wz xu = wx (mapAccumRS' wx wy wz xuxu



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
HASKELL
                  ↳ Narrow

mainModule List
  (mapAccumR :: (b  ->  c  ->  (b,a))  ->  b  ->  [c ->  (b,[a]))

module List where
  import qualified Maybe
import qualified Prelude

  mapAccumR :: (b  ->  c  ->  (b,a))  ->  b  ->  [c ->  (b,[a])
mapAccumR vw s [] (s,[])
mapAccumR f s (x : xs(mapAccumRS'' f s xs x,mapAccumRY f s xs x : mapAccumRYs f s xs x)

  
mapAccumRS' wx wy wz xu mapAccumRS'0 wx wy wz xu (mapAccumRVv8 wx wy wz xu)

  
mapAccumRS'' wx wy wz xu mapAccumRS''0 wx wy wz xu (mapAccumRVv7 wx wy wz xu)

  
mapAccumRS''0 wx wy wz xu (s'',vzs''

  
mapAccumRS'0 wx wy wz xu (s',wus'

  
mapAccumRVv7 wx wy wz xu wx (mapAccumRS' wx wy wz xu) xu

  
mapAccumRVv8 wx wy wz xu mapAccumR wx wy wz

  
mapAccumRY wx wy wz xu mapAccumRY0 wx wy wz xu (mapAccumRVv7 wx wy wz xu)

  
mapAccumRY0 wx wy wz xu (vy,yy

  
mapAccumRYs wx wy wz xu mapAccumRYs0 wx wy wz xu (mapAccumRVv8 wx wy wz xu)

  
mapAccumRYs0 wx wy wz xu (vx,ysys


module Maybe where
  import qualified List
import qualified Prelude



Haskell To QDPs


↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ LetRed
                ↳ HASKELL
                  ↳ Narrow
QDP
                      ↳ QDPSizeChangeProof

Q DP problem:
The TRS P consists of the following rules:

new_mapAccumRVv8(xv3, xv4, xv51, xv50, ba, bb, bc) → new_mapAccumR(xv3, xv4, xv51, ba, bb, bc)
new_mapAccumR(xv3, xv4, :(xv50, xv51), ba, bb, bc) → new_mapAccumRVv8(xv3, xv4, xv51, xv50, ba, bb, bc)
new_mapAccumR(xv3, xv4, :(xv50, xv51), ba, bb, bc) → new_mapAccumRVv7(xv3, xv4, xv51, xv50, ba, bb, bc)
new_mapAccumR(xv3, xv4, :(xv50, xv51), ba, bb, bc) → new_mapAccumR(xv3, xv4, xv51, ba, bb, bc)
new_mapAccumRVv7(xv3, xv4, xv51, xv50, ba, bb, bc) → new_mapAccumRVv8(xv3, xv4, xv51, xv50, ba, bb, bc)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs: